package com.stars.dao.mapper.system;

import com.stars.entity.ListPage;
import com.stars.entity.sys.SystemUserRole;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
import tk.mybatis.mapper.common.Mapper;

import java.util.List;

public interface SystemUserRoleMapper extends Mapper<SystemUserRole> {
    String  FIND_BY_ROLE_NAME ="SELECT t.id FROM system_user_role t WHERE t.role_name =#{roleName}";
    String  FIND_BY_ROLE_NAME_NOT_ID ="SELECT t.id FROM system_user_role t WHERE t.role_name =#{roleName} AND t.id !=#{id}";
    /**
     * @description 分页
     * @author alex
     * @date 2016年12月8日 下午3:55:01
     * @version 1.0.0
     */
    List<SystemUserRole> findByPage(ListPage<SystemUserRole> listPage) throws Exception;
    /**
     * 根据用户id查询用户拥有的角色信息
     *
     * @param userId
     * @return
     * @throws Exception
     */
    List<SystemUserRole> findByRoleUserId(String userId) throws Exception;

    /**
     * 根据角色名称查询
     * @param roleName 角色名称
     * @return List<SystemUserRole>
     */
    @Select(FIND_BY_ROLE_NAME)
    @Results(value = {@Result(property  = "roleName" ,column = "role_name")})
    List<SystemUserRole> findByRoleName(String roleName);

    /**
     * 根据角色名称查询，不等于本身id
     * @param roleName 角色名称
     * @param id  id
     * @return List<SystemUserRole>
     */
    @Select(FIND_BY_ROLE_NAME_NOT_ID)
    List<SystemUserRole> findByRoleNameNotId(@Param("roleName") String roleName, @Param("id") String id);

    /**
     * 子角色
     * @param pid 父类id
     * @return
     */
    List<SystemUserRole> findByRolePid(@Param("pid") String pid);

    /**
     * 根据用户id查询用户拥有的角色关系
     *
     * @param userId
     * @return
     * @throws Exception
     */
    List<SystemUserRole> findByUserId(@Param("userId") String userId) throws Exception;

    SystemUserRole findById(String id);
}